package org.example.ali;

/**
 * @author: lynn
 * @Descript:
 * @date: 2021/6/20 1:06
 * @version: 1.0
 */
public class LongString {



    /**
     * 1. 看到越界问题，就把第一个拿出来单独处理
     * 2. 连续子串是否包含问题，只要满足了，Integer.valueOf(s.charAt(i))-Integer.valueOf(s.charAt(i-1))==1 第一次都要包含，之后不包含
     * 3.
     */
    public  String getLongString(String s){
        if (s.length()<=1 || s==null) return s;
        int i=1;
        StringBuilder sb=new StringBuilder();
        int max=1;
        String res="";
        Boolean flag=true;
        while (i<s.length()){
            if (Integer.valueOf(s.charAt(i))-Integer.valueOf(s.charAt(i-1))==1){
                if (flag){
                    sb.append(s.charAt(i-1)).append(s.charAt(i));
                    flag=!flag;
                }else{
                   sb.append(s.charAt(i));
                }
            }else {
                flag=true; //fixme 代表重新开始，那么就是代表说 flag只要满足连续条件，就要加上
                int tmp=sb.length();
                if (tmp>max){
                    max=tmp;
                    res=sb.toString();
                }else{
                    sb=new StringBuilder();
                }
            }
            i++;//fixme 别丢了
        }
        return res;
    }




































    /**
     * @author: lynn
     * @Descript: 获取输入字符串的最长连续子串
     * @date: 2021/6/20 1:06
     * @version: 1.0
     */

    public String getLongStringV2(String s){
        if (s.length()<=1 || s==null ){
            return s;
        }
        StringBuilder sb=new StringBuilder();
        sb.append(s.charAt(0));
        String result="";
        for (int i=1;i<s.length();i++){
            if (Integer.valueOf(s.charAt(i))-Integer.valueOf(s.charAt(i-1))==1){
                sb.append(s.charAt(i));
                if (sb.length()>result.length()){
                    result=sb.toString();
                }
            }else{
                sb=new StringBuilder();
                sb.append(s.charAt(i));
            }
        }

        return result;
    }


    public String getLongStringV3(String s){
        if (s.length()<=1 || s==null ){
            return s;
        }

        s.chars().forEach(System.out::println);
        return "";
    }


    public static void main(String[] args) {
        String str="abckabcdefghikjlmn";
        LongString ls=new LongString();
        System.out.println(ls.getLongStringV3(str));
    }
}
